Generally, encoded data read from a magnetic disk is input to a controller and is stored in a work memory in a read/write channel. The read/write channel performs decoding processing on the data in the work memory. Data obtained by the decoding processing is transferred to a buffer memory from the work memory, and subsequently, output to a host device. In recent years, in order to improve reliability of such data, when encoding the data, a code is used with high error correction capability, for example, a low density parity check (LDPC) code. Therefore, a decoding processing time increases, particularly due to the increased error correction time associated with decoding such an encoding scheme.
At the time of data reading or data writing, in order to seek the head to a target track and position the head over the target track, or to perform encoding/decoding processing, information including a cylinder number, the number of sectors in the track, and a clock frequency are necessary. Such information is stored on the disk in advance. Before reading data in a certain track, the controller reads this information from the disk and writes the information into an internal memory such as a register. It is necessary for the controller to hold this information in the internal memory until the encoding/decoding processing for the data in the track is finished.